#ifndef DEFINICIONESPARSER_H_
#define DEFINICIONESPARSER_H_

#include <stdio.h>
#include <time.h>
#include <sys/time.h>
#include <dirent.h>
#include <string.h>
#include <stdlib.h>
#include <stdbool.h>
#include <ctype.h>
#include <math.h>
#include "./TADs/hash.h"
#include "./TADs/abb.h"
#include "./TADs/lista.h"
#include "./TADs/heap.h"

#define NombreArchivoPalabras	"palabrasLista.dat"
#define NombreArchivoArchivos	"archivosLista.dat"
#define NombreArchivoMatrizBase	"matrizBase.dat"
#define NombreMatriz	"MMatrix.dat"
#define NombreMatrizPonderada	"PMatrix.dat"
#define MaxCaracteresPorPalabra 60
#define MemoriaMaxima	10485760		// 10Mb en bytes
#define BaseNombreArchivo	"./Temp/temp"
#define BaseNombreArchivoMerged	"./Temp/tempMerged"
#define BaseNombreArchivoAllMerged	"./Temp/tempAllMerged"
#define CaracterSeparador	'.'
#define CaracterSeparadorMatriz	' '



typedef struct abb_disk
{
	abb_t* abb;
	unsigned long cantidad_archivos;
	size_t tamanio_ocupado;
}abb_disk_t;

typedef struct apariciones
{
	unsigned long documentoIndex;
	unsigned long valor;
}apariciones_t;

typedef struct elementoMatriz
{
	unsigned long fila; //DocumentoIndex
	unsigned long columna; //PalabraIndex
	double valor;
}elementoMatriz_t;

typedef struct elementoAbbMerge
{
	char* palabra;
	unsigned long documentoIndex;
	unsigned long valor;
	unsigned long archivoNumero;
}elementoAbbMerge_t;


#endif /* DEFINICIONESPARSER_H_ */
